/*
  Copyright (c) 2024, 2025, Oracle and/or its affiliates.

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License, version 2.0,
  as published by the Free Software Foundation.

  This program is designed to work with certain software (including
  but not limited to OpenSSL) that is licensed under separate terms,
  as designated in a particular file or component or in included license
  documentation.  The authors of MySQL hereby grant you an additional
  permission to link the program and your derivative works with the
  separately licensed software that they have either included with
  the program or referenced in the documentation.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

#ifndef ROUTER_SRC_HTTP_INCLUDE_HTTP_BASE_HTTP_TIME_H_
#define ROUTER_SRC_HTTP_INCLUDE_HTTP_BASE_HTTP_TIME_H_

#include "mysqlrouter/http_common_export.h"

namespace http {
namespace base {

/**
 * convert a Date: header into a time_t.
 *
 * @return a time_t representation of Date: header value
 * @throws std::out_of_range on invalid formats
 */
HTTP_COMMON_EXPORT time_t time_from_rfc5322_fixdate(const char *date_buf);

/** @brief convert time_t into a Date: header value.
 *
 * @param ts time in binary format which should be converted
 * @param date_buf buffer to store text date
 * @param date_buf_len size of buffer
 *
 * @returns operation result
 * @retval > 0 number of characters written to buffer, excluding null character
 * @retval < 0 error occurred
 */
HTTP_COMMON_EXPORT int time_to_rfc5322_fixdate(time_t ts, char *date_buf,
                                               size_t date_buf_len);

}  // namespace base
}  // namespace http

#endif  // ROUTER_SRC_HTTP_INCLUDE_HTTP_BASE_HTTP_TIME_H_
